package com.vtuzx.kingdee.xqc_api.service;


import com.vtuzx.core.VtuzxException;
import com.vtuzx.core.bean.dto.VtuzxMap;
import com.vtuzx.core.bean.dto.VtuzxToken;
import com.vtuzx.web.bean.VtuzxDownloadBean;
import org.bson.types.ObjectId;

import java.util.List;
import java.util.Map;

/**
 * 采购订单服务
 */
public interface IXqcPurOrderService {

    /**
     * 保存采购订单
     *
     * @param _userId 用户id
     * @param name 用户名
     * @param param 参数
     */
    void savePurOrder(ObjectId _userId, String name, Map<String, Object> param);

    /**
     * 删除采购订单
     *
     * @param _userId 用户id
     * @param name 用户名
     * @param param 参数
     */
    void deletePurOrder(ObjectId _userId, String name, Map<String, Object> param);

    /**
     * 审核采购订单
     *
     * @param _userId 用户id
     * @param name 用户名
     * @param orderNo 审核订单号
     */

    void auditPurOrder(ObjectId _userId, String name, String orderNo) throws VtuzxException;

    /**
     * 反审采购订单
     *
     * @param _userId 用户id
     * @param name 用户名
     * @param orderNo 反审核订单号
     */
    void unAuditPurOrder(ObjectId _userId, String name, String orderNo) throws VtuzxException;

    /**
     * 获取采购订单列表
     *
     * @param _userId 用户ID
     * @param param 检索条件
     * @param pageIndex 页号
     * @param pageSize 页大小
     */
    VtuzxMap getPurOrderList(ObjectId _userId, Map<String, Object> param, int pageIndex, int pageSize);

    /**
     * 获取采购订单详情
     *
     * @param _userId 用户id
     * @param name 用户名
     * @param orderNo 反审核订单号
     * @return 采购订单详情
     */
    VtuzxMap getPurOrder(ObjectId _userId, String name, String orderNo) throws VtuzxException;

    /**
     * 下载采购订单列表
     *
     * @param token token
     * @param param 入参
     * @return 查询结果
     */
    VtuzxDownloadBean downloadPurOrder(VtuzxToken token, Map<String, Object> param) throws Exception;

    /**
     * 保存采购订单结算详情
     *
     * @param _userId 用户id
     * @param name 用户名
     * @param param 保存参数
     * @return 采购订单结算详情
     */
    VtuzxMap savePurOrderSettlement(ObjectId _userId, String name, Map<String, Object> param);

    /**
     * 删除采购订单结算详情
     *
     * @param ids 结算详情ID
     */
    void deletePurOrderSettlement(List<String> ids);

    /**
     * 审核采购订单结算详情
     *
     * @param _userId 用户id
     * @param name 用户名
     * @param id 结算详情ID
     */
    void auditPurOrderSettlement(ObjectId _userId, String name, String id) throws VtuzxException;

    /**
     * 反审采购订单结算详情
     *
     * @param _userId 用户id
     * @param name 用户名
     * @param id 结算详情ID
     */
    void unAuditPurOrderSettlement(ObjectId _userId, String name, String id) throws VtuzxException;

    /**
     * 获取结算详情
     *
     * @param _userId 用户id
     * @param name 用户名
     * @param param 参数
     * @return 结算详情列表
     */
    VtuzxMap getPurOrderSettlement(ObjectId _userId, String name, Map<String, Object> param);

    /**
     * 同步金蝶采购订单
     * @param token
     * @param param
     */
    void syncKingdeePurOrder(VtuzxToken token, Map<String, Object> param) throws Exception;

    /**
     * 获取同步金蝶采购订单处理结果
     * @param token
     * @param param
     */
    VtuzxMap getKingdeePurOrder(VtuzxToken token, Map<String, Object> param);

}
